GtkWidget: Add gtk_widget_get_path().
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 12 Mar 2010 18:02:33 +0000 (19:02 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:36:52 +0000 (15:36 +0100)
This function composes and returns a GtkWidgetPath representing
the passed widget.

gtk/gtkwidget.c
gtk/gtkwidget.h

index c28c31f5a98063db232c536afa81e2ce4d8d758a..f6a1fe31ab1010504cfdf4b971f92ae64c26fcc2 100644 (file)
@@ -13165,6 +13165,27 @@ _gtk_widget_set_height_request_needed (GtkWidget *widget,
   widget->priv->height_request_needed = height_request_needed;
 }
 
+GtkWidgetPath *
+gtk_widget_get_path (GtkWidget *widget)
+{
+  GtkWidgetPath *path;
+
+  g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+  g_return_val_if_fail (GTK_WIDGET_REALIZED (widget), NULL);
+
+  path = gtk_widget_path_new ();
+
+  while (widget)
+    {
+      gtk_widget_path_prepend_widget_desc (path,
+                                           G_OBJECT_TYPE (widget),
+                                           widget->name);
+      widget = widget->parent;
+    }
+
+  return path;
+}
+
 GtkStyleContext *
 gtk_widget_get_style_context (GtkWidget *widget)
 {
@@ -13178,7 +13199,8 @@ gtk_widget_get_style_context (GtkWidget *widget)
   if (G_UNLIKELY (!context))
     {
       context = g_object_new (GTK_TYPE_STYLE_CONTEXT, NULL);
-      g_object_set_qdata_full (widget, quark_style_context, context,
+      g_object_set_qdata_full (G_OBJECT (widget),
+                               quark_style_context, context,
                                (GDestroyNotify) g_object_unref);
     }
 
index 23afab27b7655b1568894f00a36e3b68e5b73954..e522b2b9b8d6d70341927b36c33ffe93d1aeb0b6 100644 (file)
@@ -37,6 +37,7 @@
 #include <gtk/gtkstyle.h>
 #include <gtk/gtksettings.h>
 #include <gtk/gtkstylecontext.h>
+#include <gtk/gtkwidgetpath.h>
 #include <atk/atk.h>
 
 G_BEGIN_DECLS
@@ -944,6 +945,8 @@ gboolean     gtk_widget_in_destruction (GtkWidget *widget);
 
 GtkStyleContext * gtk_widget_get_style_context (GtkWidget *widget);
 
+GtkWidgetPath *   gtk_widget_get_path (GtkWidget *widget);
+
 
 G_END_DECLS